約 4,278,590 件
https://w.atwiki.jp/abwiki/pages/31.html
実践的なプログラミング、コンピュータ理論(仕組み)、アルゴリズムなど 何か要望ある?(あったら作ってね的な) アルゴリズム関連 暗号化 最適化 2進数に変換してみる Base64 エンコード DCT(離散コサイン変換) 基数変換 画像の回転 ビットカウント xorshift システム関連 ファイル圧縮してみよう htmlhelp 文字コードの変換 マルチスレッド デッドロック ダイアログボックスをリソースから読み出してみよう プログレスバー ステータスバー ウインドウの列挙 CPU使用率の取得と表示 GDIでお絵かき 壁紙チェンジャー スクリーンセーバーを作る必要性 メモリ上の機械語プログラム タイマー ラーメンタイマー デジタル時計 HDD温度を調べる メッセージフック レジストリをいじってみたい INIファイル コマンドライン引数 クリップボード マニフェスト埋め込み(XPスタイルへの変更) msvcrt メモリーをケチる 円を描く 印刷 プログレスバーの中に文字が表示できるやつ コンソールアプリ InputBoxを使う N88BASIC互換モードでドラッグドロップを受け付ける xmlを読み込む HTMLエディタの作成 エミュレータを作る(1) マルチメディア関連 ID3V1を取得 mp3プレーヤーを作ろう 可逆圧縮(猿音) gogo.sbp マルチメディア しゃべるプログラム サンプリングレートコンバータ DirectShowでDVD再生 waveファイルの再生 AVIファイルの操作 mpglib.dllを使ったmp3再生 ネット関連 インターネット ダウンローダーを作ってみよう 2ちゃんねるにアクセスしてみよう 簡易nslookup FTP ソケット お遊びプログラム うらない ライフゲーム 新メモリ最適化ツール In AB ブロック崩し じゃんけんゲーム 計算ゲーム ギャルゲーをつくろう テトリスをつくろう その他 ABのヘルプを充実させよう! AB2.62でウインドウ表示命令を使う 過去wiki HTTPの初歩 マウスキャプチャー ウィンドウのサブクラス化(1) リストビュー(3) リストボックス コンボボックス ボタン類 エディットボックス(1)
https://w.atwiki.jp/abwiki/pages/36.html
#N88BASIC Dim id3genre[256] = [ _ "Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", "Hip-Hop", "Jazz", "Metal", "New Age", "Oldies", _ "Other", "Pop", "R B", "Rap", "Reggae", "Rock", "Techno", "Industrial", "Alternative", "Ska", "Death Metal", "Pranks", _ "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk", "Fusion", "Trance", "Classical", "Instrumental", _ "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", "AlternRock", "Bass", "Soul", "Punk", "Space", "Meditative", _ "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", "Techno-Industrial", "Electronic", "Pop-Folk", _ "Eurodance", "Dream", "Southern Rock", "Comedy", "Cult", "Gangsta", "Top 40", "Christian Rap", "Pop/Funk", "Jungle", _ "Native American", "Cabaret", "New Wave", "Psychedelic", "Rave", "Showtunes", "Trailer", "Lo-Fi", "Tribal","Acid Punk", _ "Acid Jazz", "Polka", "Retro", "Musical", "Rock Roll", "Hard Rock", "Folk", "Folk/Rock", "National Folk", "Swing", _ "Fast-Fusion", "Bebob", "Latin", "Revival", "Celtic", "Bluegrass", "Avantgarde", "Gothic Rock", "Progressive Rock", _ "Psychedelic Rock", "Symphonic Rock", "Slow Rock", "Big Band", "Chorus", "Easy Listening", "Acoustic", "Humour", "Speech", _ "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", "Primus", "Porn Groove", "Satire", "Slow Jam", _ "Club", "Tango", "Samba", "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", "Freestyle", "Duet", "Punk Rock", "Drum Solo", _ "A Cappella", "Euro-House", "Dance Hall", "Goa", "Drum Bass", "Club-House", "Hardcore", "Terror", "Indie", "BritPop", _ "Negerpunk", "Polsk Punk", "Beat", "Christian Gangsta Rap", "Heavy Metal", "Black Metal", "Crossover", _ "Contemporary Christian", "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", "Synthpop" _ ] As BytePtr Type ID3v1 id[2] As Byte title[29] As Byte artist[29] As Byte album[29] As Byte year[3] As Byte comment[28] As Byte track As Byte genre As Byte End Type Sub Puts(str As BytePtr) Print MakeStr(str) End Sub Function GetID3(mp3file As BytePtr, id3 As *ID3v1) As Long Dim hFile As HANDLE Dim err As Long Dim read As Long debug hFile = CreateFile(mp3file, GENERIC_READ, 0, ByVal NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) If hFile = INVALID_HANDLE_VALUE Then Exit Function err = SetFilePointer(hFile, -SizeOf(ID3V1), NULL, FILE_END) err = ReadFile(hFile, id3, SizeOf(ID3V1), VarPtr(read), ByVal NULL) CloseHandle(hFile) If err = FALSE Then Exit Function GetID3 = TRUE End Function Sub ShowID3(mp3file As BytePtr, id3 As *ID3v1) Dim b[3] As Byte Puts(mp3file) Puts(id3- title) Puts(id3- artist) Puts(id3- album) Puts(id3- year) Puts(id3- comment) b[0] = id3- track +Asc("0") Puts(b) Puts(id3genre[id3- genre]) End Sub Dim id3 As ID3v1 GetID3("test.mp3", VarPtr(id3)) ShowID3("test.mp3", VarPtr(id3))
https://w.atwiki.jp/abwiki/pages/57.html
プリプロセッサとは、前処理と呼ばれる。 これは、コンパイルする前にソースコードをいじる。 ABで利用可能なプリプロセッサ命令は下記の通り。 #include |指定したファイルの内容をソース プログラムのこのディレクティブの位置に取り込みます。 #prompt,#N88BASIC |basic/prompt.sbpをインクルードして、グラフィカル アプリケーションを作成します。 #console |basic/console.sbpをインクルードして、コンソール アプリケーションを作成します。 #resource |リソース ファイル(*.rc)を取り込みます。 #strict |コンパイルの際に型チェックが厳密に行われるようになります。 #define |#ifdef/#ifndefディレクティブで判定可能な識別子を指定します。 #ifdef、#ifndef |条件付のコンパイルを行います。
https://w.atwiki.jp/l5flo20180723/pages/50.html
ブラックボックス 分類 魔法生物-ミミック種 出現 フィールドイベント ドロップ 経験値5000 各種封玉・タズラコイン 『ナゾに満ちた 不思議な宝箱モドキ。 異次元世界の住民たちが 手招きしている。』
https://w.atwiki.jp/hmiku/pages/59791.html
【検索用 ふらっくほっくす 登録タグ 2011年 UTAU kts napi ふ 曲 曲は 重音テト】 + 目次 目次 曲紹介 歌詞 コメント 作詞:napi 作曲:napi 編曲:napi イラスト:kts 唄:重音テト 曲紹介 曲名:『ブラックボックス』 歌詞 (動画より書き起こし) 馬鹿げた近似化 無意味な統計 ふざけたカテゴライズ ただ繰り返し 入力 / 出力 間にあるのは シナプス燃やしている黒い箱 知った振りして 気持ち押し付け 傷付けては忘れて そのサイクルの中 答えがあると信じ 箱に隠した誰にも解けはしないパズル パンドラの災いはどこにもない 不要な演算 無価値な構造 足りないリソースなど 全部いらない 入力 / 出力 渡した引数 全てがそれだけだと 言うのなら 近づいたよう思えたあとに また分からなくなるよ この振り子のような 振る舞いが見せた夢 量子が示す可能性とその限界 何ビット重ねても無駄だと知る 演繹的な推論などが 存在しないのなら また過ち犯し 繰り返すしかないさ ブラックボックス 決して知れぬその答えを 知りたくて 求めては また傷つく コメント 名前 コメント コメントを書き込む際の注意 コメント欄は匿名で使用できる性質上、荒れやすいので、 以下の条件に該当するようなコメントは削除されることがあります。 コメントする際は、絶対に目を通してください。 暴力的、または卑猥な表現・差別用語(Wiki利用者に著しく不快感を与えるような表現) 特定の個人・団体の宣伝または批判 (曲紹介ページにおいて)歌詞の独自解釈を展開するコメント、いわゆる“解釈コメ” 長すぎるコメント 『歌ってみた』系動画や、歌い手に関する話題 「カラオケで歌えた」「学校で流れた」などの曲に直接関係しない、本来日記に書くようなコメント カラオケ化、カラオケ配信等の話題 同一人物によると判断される連続・大量コメント Wikiの保守管理は有志によって行われています。 Wikiを気持ちよく利用するためにも、上記の注意事項は守って頂くようにお願いします。
https://w.atwiki.jp/mitlocke/pages/1038.html
死のマジックボックス (遊☆戯☆王OCG) 使用条件 裏向きの能力カードを所持している 効果 [全般][主要] 同じマスにいるキャラクターが所持している表になっている能力カード1枚を選択する。 選択した能力カードを破棄させる。 その後、自分が所持している裏向きの能力カード1枚をそのキャラクターに渡す。 備考 効率は悪いが相手の厄介な能力カードを除去したり、味方に相性の良い能力カードを渡すことができる。 この能力カードへの意見 名前 コメント
https://w.atwiki.jp/ellark-sisyamo/pages/199.html
アイテム名:ブラックボックス 必要熟練度:闇Lv0 買値:120zel 売値:zel 攻撃 12/魔力 18/敏捷 -5 説明書 開かない箱。闇のオルタナティヴインスタンスだが、打撃武器にもなる 入手方法:商店(ゼネラルロッツ・リンコルン)
https://w.atwiki.jp/abwiki/pages/218.html
MinGWのパブリックドメインのソース を ABに変換する 途中まで…あとはまかせた Const DLG_SCRNSAVECONFIGURE= 2003Const idsIsPassword=1000Const idsIniFile=1001Const idsScreenSaver=1002Const idsPassword=1003Const idsDifferentPW=1004Const idsChangePW=1005Const idsBadOldPW=1006Const idsAppName=1007Const idsNoHelpMemory=1008Const idsHelpFile=1009Const idsDefKeyword=1010Const IDS_DESCRIPTION =1Const ID_APP =100Const WS_GT =WS_GROUP or WS_TABSTOPConst SCRM_VERIFYPW=WM_APPConst MAXFILELEN=13Const TITLEBARNAMELEN=40Const APPNAMEBUFFERLEN=40Const BUFFLEN=255Const CLASS_SCRNSAVE = "WindowsScreenSaverClass"/* globals */Dim hMainWindow = NULL As HWNDDim fChildPreview = FALSE As LongDim hMainInstance As HINSTANCEDim szName[TITLEBARNAMELEN] As ByteDim szAppName[APPNAMEBUFFERLEN] As ByteDim szIniFile[MAXFILELEN] As ByteDim szScreenSaver[22] As ByteDim szHelpFile[MAXFILELEN] As ByteDim szNoHelpMemory[BUFFLEN] As ByteDim MyHelpMessage As DWord/* local house keeping */Dim hPwdLib = NULL As HINSTANCEDim pt_orig As POINTAPIDim checking_pwd = FALSE As LongDim closing = FALSE As LongDim w95 = FALSE As LongTypedef VERIFYPWDPROC = *Function(hwnd As HWND) As LongTypedef CHPWDPROC = *Function(s As *Byte,hwnd As HWND, wp As DWord, lp As DWord) As DWORDDim VerifyScreenSavePwd = NULL As VERIFYPWDPROC/* function names */Const szVerifyPassword = "VerifyScreenSavePwd"Const szPwdChangePassword = "PwdChangePasswordA"/*static void TerminateScreenSaver(HWND hWnd);static BOOL RegisterClasses(void);static LRESULT WINAPI SysScreenSaverProc(HWND,UINT,WPARAM,LPARAM);static int LaunchScreenSaver(HWND hParent);static void LaunchConfig(void);*/Function ISSPACE(c As Byte) As LongIf c = Asc(" ") Or c = Asc(Ex"\t") ThenISSPACE = TRUEEnd IfEnd FunctionFunction ISNUM(c As Byte) As LongIf c = Asc("0") And c = Asc("9") ThenISNUM = TRUEEnd IfEnd FunctionFunction _toul(s As *Byte) As DWord_toul = Val(s)'?End Function/* screen saver entry point */int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR CmdLine, int nCmdShow) { LPSTR p; OSVERSIONINFO vi; /* initialize */ hMainInstance = hInst; vi.dwOSVersionInfoSize = sizeof(vi); GetVersionEx( vi); /* check if we are going to check for passwords */ if (vi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { HKEY hKey; /* we are using windows 95 */ w95 = TRUE; if (RegOpenKey(HKEY_CURRENT_USER, REGSTR_PATH_SCREENSAVE , hKey) == ERROR_SUCCESS) { DWORD check_pwd; DWORD size = sizeof(DWORD); DWORD type; LONG res; res = RegQueryValueEx(hKey, REGSTR_VALUE_USESCRPASSWORD, NULL, type, (PBYTE) check_pwd, size); if (check_pwd res == ERROR_SUCCESS) { hPwdLib = LoadLibrary(TEXT("PASSWORD.CPL")); if (hPwdLib) VerifyScreenSavePwd = GetProcAddress(hPwdLib, szVerifyPassword); } RegCloseKey(hKey); } } /* parse arguments */ for (p = CmdLine; *p; p++) { switch (*p) { case 'S' case 's' /* start screen saver */ return LaunchScreenSaver(NULL); case 'P' case 'p' { /* start screen saver in preview window */ HWND hParent; fChildPreview = TRUE; while (ISSPACE(*++p)); hParent = (HWND) _toul(p); if (hParent IsWindow(hParent)) return LaunchScreenSaver(hParent); } return 0; case 'C' case 'c' /* display configure dialog */ LaunchConfig(); return 0; case 'A' case 'a' { /* change screen saver password */ HWND hParent; while (ISSPACE(*++p)); hParent = (HWND) _toul(p); if (!hParent || !IsWindow(hParent)) hParent = GetForegroundWindow(); ScreenSaverChangePassword(hParent); } return 0; case '-' case '/' case ' ' default ; } } LaunchConfig(); return 0; }static void LaunchConfig(void) { /* FIXME should this be called */ RegisterDialogClasses(hMainInstance); /* display configure dialog */ DialogBox(hMainInstance, MAKEINTRESOURCE(DLG_SCRNSAVECONFIGURE), GetForegroundWindow(), (DLGPROC) ScreenSaverConfigureDialog); }static int LaunchScreenSaver(HWND hParent) { BOOL foo; UINT style; RECT rc; MSG msg; /* don't allow other tasks to get into the foreground */ if (w95 !fChildPreview) SystemParametersInfo(SPI_SCREENSAVERRUNNING, TRUE, foo, 0); msg.wParam = 0; /* register classes, both user defined and classes used by screen saver library */ if (!RegisterClasses()) { MessageBox(NULL, TEXT("RegisterClasses() failed"), NULL, MB_ICONHAND); goto restore; } /* a slightly different approach needs to be used when displaying in a preview window */ if (hParent) { style = WS_CHILD; GetClientRect(hParent, rc); } else { style = WS_POPUP; rc.right = GetSystemMetrics(SM_CXSCREEN); rc.bottom = GetSystemMetrics(SM_CYSCREEN); style |= WS_VISIBLE; } /* create main screen saver window */ hMainWindow = CreateWindowEx(hParent ? 0 WS_EX_TOPMOST, CLASS_SCRNSAVE, TEXT("SCREENSAVER"), style, 0, 0, rc.right, rc.bottom, hParent, NULL, hMainInstance, NULL); /* display window and start pumping messages */ if (hMainWindow) { UpdateWindow(hMainWindow); ShowWindow(hMainWindow, SW_SHOW); while (GetMessage( msg, NULL, 0, 0) == TRUE) { TranslateMessage( msg); DispatchMessage( msg); } }restore /* restore system */ if (w95 !fChildPreview) SystemParametersInfo(SPI_SCREENSAVERRUNNING, FALSE, foo, 0); FreeLibrary(hPwdLib); return msg.wParam; }/* this function takes care of *must* do tasks, like terminating screen saver */static LRESULT WINAPI SysScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CREATE if (!fChildPreview) SetCursor(NULL); /* mouse is not supposed to move from this position */ GetCursorPos( pt_orig); break; case WM_DESTROY PostQuitMessage(0); break; case WM_TIMER if (closing) return 0; break; case WM_PAINT if (closing) return DefWindowProc(hWnd, msg, wParam, lParam); break; case WM_SYSCOMMAND if (!fChildPreview) switch (wParam) { case SC_CLOSE case SC_SCREENSAVE case SC_NEXTWINDOW case SC_PREVWINDOW return FALSE; } break; case WM_MOUSEMOVE case WM_LBUTTONDOWN case WM_RBUTTONDOWN case WM_MBUTTONDOWN case WM_KEYDOWN case WM_SYSKEYDOWN case WM_NCACTIVATE case WM_ACTIVATE case WM_ACTIVATEAPP if (closing) return DefWindowProc(hWnd, msg, wParam, lParam); break; } return ScreenSaverProc(hWnd, msg, wParam, lParam); }LONG WINAPI DefScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { /* don't do any special processing when in preview mode */ if (fChildPreview || closing) return DefWindowProc(hWnd, msg, wParam, lParam); switch (msg) { case WM_CLOSE TerminateScreenSaver(hWnd); /* do NOT pass this to DefWindowProc; it will terminate even if an invalid password was given. */ return 0; case SCRM_VERIFYPW /* verify password or return TRUE if password checking is turned off */ if (VerifyScreenSavePwd) return VerifyScreenSavePwd(hWnd); else return TRUE; case WM_SETCURSOR if (checking_pwd) break; SetCursor(NULL); return TRUE; case WM_NCACTIVATE case WM_ACTIVATE case WM_ACTIVATEAPP if (wParam != FALSE) break; case WM_MOUSEMOVE { POINT pt; GetCursorPos( pt); if (pt.x == pt_orig.x pt.y == pt_orig.y) break; } case WM_LBUTTONDOWN case WM_RBUTTONDOWN case WM_MBUTTONDOWN case WM_KEYDOWN case WM_SYSKEYDOWN /* try to terminate screen saver */ if (!checking_pwd) PostMessage(hWnd, WM_CLOSE, 0, 0); break; } return DefWindowProc(hWnd, msg, wParam, lParam); }static void TerminateScreenSaver(HWND hWnd) { /* don't allow recursion */ if (checking_pwd || closing) return; /* verify password */ if (VerifyScreenSavePwd) { checking_pwd = TRUE; closing = SendMessage(hWnd, SCRM_VERIFYPW, 0, 0); checking_pwd = FALSE; } else closing = TRUE; /* are we closing? */ if (closing) { DestroyWindow(hWnd); } else GetCursorPos( pt_orig); /* if not get new mouse position */ }/* Register screen saver window class and call user supplied hook. */static BOOL RegisterClasses(void) { WNDCLASS cls; cls.hCursor = NULL; cls.hIcon = LoadIcon(hMainInstance, MAKEINTATOM(ID_APP)); cls.lpszMenuName = NULL; cls.lpszClassName = CLASS_SCRNSAVE; cls.hbrBackground = GetStockObject(BLACK_BRUSH); cls.hInstance = hMainInstance; cls.style = CS_VREDRAW | CS_HREDRAW | CS_SAVEBITS | CS_PARENTDC; cls.lpfnWndProc = (WNDPROC) SysScreenSaverProc; cls.cbWndExtra = 0; cls.cbClsExtra = 0; if (!RegisterClass( cls)) return FALSE; return RegisterDialogClasses(hMainInstance); }void WINAPI ScreenSaverChangePassword(HWND hParent) { /* load Master Password Router (MPR) */ HINSTANCE hMpr = LoadLibrary(TEXT("MPR.DLL")); if (hMpr) { CHPWDPROC ChangePassword; ChangePassword = (CHPWDPROC) GetProcAddress(hMpr, szPwdChangePassword); /* change password for screen saver provider */ if (ChangePassword) ChangePassword(TEXT("SCRSAVE"), hParent, 0, NULL); FreeLibrary(hMpr); } }
https://w.atwiki.jp/naobe/pages/133.html
OpenSourceに戻る 対象バージョン 5.6.0 インストール http //activemq.apache.org/download.html からバイナリをダウンロード 展開 ファイル、ディレクトリともに権限をactivemq activemqに修正 drwxr-xr-x 5 activemq activemq 4096 7月 1 18 32 data drwxr-xr-x 8 activemq activemq 4096 7月 1 18 32 example drwxr-xr-x 10 root admin 4096 7月 1 17 36 .. drwxr-xr-x 5 activemq activemq 4096 7月 1 14 04 bin drwxrwxr-x 5 activemq activemq 4096 7月 1 13 52 tmp drwxr-xr-x 10 activemq activemq 4096 7月 1 13 52 . drwxr-xr-x 2 activemq activemq 4096 6月 30 22 39 conf drwxr-xr-x 2 activemq activemq 4096 6月 30 22 39 docs drwxr-xr-x 4 activemq activemq 4096 6月 30 22 39 lib drwxr-xr-x 6 activemq activemq 4096 6月 30 22 39 webapps -rw-r--r-- 1 activemq activemq 40581 5月 2 21 07 LICENSE -rw-r--r-- 1 activemq activemq 3335 5月 2 21 07 NOTICE -rw-r--r-- 1 activemq activemq 2613 5月 2 21 07 README.txt -rw-r--r-- 1 activemq activemq 2038 5月 2 21 07 WebConsole-README.txt -rw-r--r-- 1 activemq activemq 2812 5月 2 21 07 user-guide.html -rwxr-xr-x 1 activemq activemq 4984024 5月 2 20 18 activemq-all-5.6.0.jar bin/activemqの以下を修正 if [ -z "$ACTIVEMQ_USER" ] ; then ACTIVEMQ_USER="activemq" # ACTIVEMQ_USER="" fi #JAVA_HOME="" JAVA_HOME=Javaインストールディレクトリ 起動 sudo bin/activemq start で起動。ActiveMQのホームページには、bin/activemqで起動と書いてあったが、Usageを表示してサーバが起動しない。 ps -ef | grep activemqで起動を確認 activemq 12032 1 0 Jul01 ? 00 00 35 /usr/java/jdk1.6.0_21/bin/java -Dorg.apache.activemq.audit=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote -Djava.io.tmpdir=/opt/apache-activemq-5.6.0/tmp -Dactivemq.classpath=/opt/apache-activemq-5.6.0/conf; -Dactivemq.home=/opt/apache-activemq-5.6.0 -Dactivemq.base=/opt/apache-activemq-5.6.0 -Dactivemq.conf=/opt/apache-activemq-5.6.0/conf -Dactivemq.data=/opt/apache-activemq-5.6.0/data -jar /opt/apache-activemq-5.6.0/bin/run.jar start netstat -an | grep 61616で、ポート確認 tcp 0 0 61616 * LISTEN http //ホスト 8161/adminで管理画面表示 exampleのproducerを実行 cd example ant producer 管理画面のqueueをクリック。キューに2000件のメッセージが登録されている。 TEST.FOOをクリックするとキューの詳細を表示 exampleのconsumerを実行。キューが0件になる。 ant consumer サンプルプログラム ActiveMQと異なるホストからJNDIでConnectionFactoryを取得してキューに送信。 package test; import java.util.Date; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import javax.naming.Context; import javax.naming.NamingException; public class ActiveMQTest { public static void main(String[] args) { ActiveMQTest test = new ActiveMQTest(); try { test.execute(); } catch (Exception e) { e.printStackTrace(); } } private int messageSize = 255; public void execute() throws NamingException, JMSException { Connection connection = null; try { Context jndiContext = new javax.naming.InitialContext(); ConnectionFactory connectionFactory = (ConnectionFactory)jndiContext.lookup("queueConnectionFactory"); connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("TEST.FOO"); MessageProducer producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); sendLoop(session, producer); } finally { try { if( connection != null) { connection.close(); } } catch (Throwable ignore) { } } } private void sendLoop(Session session, MessageProducer producer) throws JMSException { for (int i = 0; i 100; i++) { TextMessage message = session .createTextMessage(createMessageText(i)); String msg = message.getText(); if (msg.length() 50) { msg = msg.substring(0, 50) + "..."; } System.out.println("Sending message " + msg + " "); producer.send(message); } } private String createMessageText(int index) { StringBuffer buffer = new StringBuffer(messageSize); buffer.append("Message " + index + " sent at " + new Date()); if (buffer.length() messageSize) { return buffer.substring(0, messageSize); } for (int i = buffer.length(); i messageSize; i++) { buffer.append( ); } return buffer.toString(); } } jndi.propertiesを作成しておく。 # START SNIPPET jndi java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory # use the following property to configure the default connector java.naming.provider.url = tcp //ホスト 61616 # use the following property to specify the JNDI name the connection factory # should appear as. connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry # register some queues in JNDI using the form # queue.[jndiName] = [physicalName] queue.MyQueue = example.MyQueue # register some topics in JNDI using the form # topic.[jndiName] = [physicalName] topic.MyTopic = example.MyTopic # END SNIPPET jndi クラスパスに、activemq-all-5.6.0.jar、spring-core-3.0.6.RELEASE.jar(これは本当に必要?)を設定しておく。 キューから受信 private void receiveQueueTest() throws NamingException, JMSException { Connection connection = null; Context jndiContext = new javax.naming.InitialContext(); ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext .lookup("queueConnectionFactory"); connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("TEST.FOO"); MessageConsumer consumer = session.createConsumer(destination); consumer.setMessageListener(this); } public void onMessage(Message message) { TextMessage msg = (TextMessage) message; try { System.out.println( msg.getText()); } catch (JMSException e) { e.printStackTrace(); } } たまっていたキューを全て受信。consumer.receive()とすると1件だけ受信。 Request-Respopnseの実現 http //codedependents.com/2010/03/04/synchronous-request-response-with-activemq-and-spring/ より JMS上でリクエストーレスポンスを実現する最も良い方法は、一時キューとクライアント毎のconsumerをスタートアップ時に作成することです。一時キュー向けのすべてのメッセージにJMSReplyToプロパティをセットし、リクエストメッセージとレスポンスメッセージを関連付けるIDを使うことである。これでconsumer, producerを毎回作成するオーバヘッドを防ぐことができる。また希望するなら多くのスレッド間で、producer, consumerを共有することができる。 Tomcatとの連携
https://w.atwiki.jp/hamilton/pages/115.html
旧LivebayWiki 本Wikiの元になったWikiで、右橋さんが公開されてました。 (http //f45.aaa.livedoor.jp/~livebay/pukiwiki14/pukiwiki.php?FrontPage) ☆☆2007横浜実況スレ5/20阪神戦part3☆☆ http //www.livebays.net/bbs/test/read.cgi?bbs=live key=1179649722 849 :ホッシー君@開きなおり :2007/05/20(日) 21 15 18 にわかだっていいじゃない(><) 855 :ホッシー君@開きなおり :2007/05/20(日) 21 16 25 849 誰もダメなんて言ってないよ(><) これから色々詳しくなれば良いんだよ 例えばこれとか ttp //f45.aaa.livedoor.jp/~livebay/pukiwiki14/pukiwiki.php?FrontPage 865 :ホッシー君@開きなおり :2007/05/20(日) 21 17 50 855 このwikiの内容はベイスターズファンにとって必要な知識なんだろうかと時々思う 870 名前: ホッシー君@開きなおり 投稿日: 2007/05/20(日) 21 19 23 865 まあ、この板でやっていくために作られたようなものだからな 別に野球を見るために必要なものばかりではないが 結構過去起こったことを知るには使い勝手良かったりするな 872 名前: ホッシー君@開きなおり 投稿日: 2007/05/20(日) 21 19 31 865 ベイスターズファンとしては必要ないかもしれないけど livebays.netのスクリプトなら知っておいてもいいと思うネタ帳のようなもの 873 名前: ホッシー君@開きなおり 投稿日: 2007/05/20(日) 21 19 42 865 とりあえず、かんりにんさんがどんな人か知らないと、下手すると書込み禁止喰らっちゃうよ(><) 例えば、誤って「絵が下手だな、こんな絵描いた奴誰だよwww」なんて言ってしまったら・・・・・・